<?php if(!defined('CALL')) exit('No direct script access allowed');

include_once('lib/utils.class.php');
include_once('lib/xtemplate.class.php');
include_once('lib/logger.class.php');

class vPlans
{
	private static $img = 'p-';
	private static $ext = '.gif';
	private static $p_names = array('утром', 'днем', 'вечером', 'ночью');
	// private static $now = strtotime(date("Y-m-d"));

	public static function build_eventInside(&$xtpl, $e, $actor_id = null)
	{
		// Logger::Write(__FILE__." ".__FUNCTION__." line: ".__LINE__, print_r($e, true));
		
		// Рамки нужны только вокруг событий с участием пользователя
		// но только в режимах просмотра ВСЕХ или ИЗБРАННЫХ сообщений
		$shared_class = 'not-shared';
		$shared_class = 'shared';
		if($_SESSION['page'] == 'plans')
		{
			if($_SESSION['categ'] == 'all' || $_SESSION['categ'] == 'watch')
				$shared_class = 'shared';
		}
		
		$in_future = strtotime($e["dt_beg"]) >= strtotime(date("Y-m-d"));
		$xtpl->assign('user_id', $e['user_id']);
		$xtpl->assign('event_id', $e['event_id']);
		$xtpl->assign('date', $e['dt_beg']);
		$xtpl->assign('city', $e['city']);
		$xtpl->assign('city_id', $e['city_id']);
		$xtpl->assign('access', $e['access']);
		$xtpl->assign('user_note', $e['user_note']);
		
		$xtpl->assign('actor_id', is_null($actor_id) ? 0 : $actor_id);
		// $edt = date_create($e['dt_beg']);
		// $now = date_create("now");
		$time_cls = (mktime(0, 0, 0) > strtotime($e['dt_beg'])) ? "past" : "future";
		$xtpl->assign('past_future', $time_cls);
		
		$parts = "";
		for($x = 0; $x < 4; $x++)
		{
			$xtpl->assign('dt'.$x, ($e['part_'.$x] == 'Y') ? self::$img.$x.self::$ext : 'spacer.gif');
			$xtpl->assign('title'.$x, ($e['part_'.$x] == 'Y') ? self::$p_names[$x] : '');
			$parts .= $e['part_'.$x];
		}
		$xtpl->assign('parts', $parts);
		
		
		
		$xtpl->assign('to_share', $in_future ? 'Участвуют' : 'Участвовали');
		$xtpl->assign('num_com', $e['num_com']);
		
		$is_comment_page = (bool)($_SESSION["page"] == "comments");
		
		// действия над событиями доступны только авторизованным
		if(!empty($actor_id))
		{
			// действия доступные над своими событиями,
			if(($e["user_id"] == $actor_id))
			{
				// ссылка "удалить" не показывается на странице коментариев
				// (где тоже показывается событие)
				if(!$is_comment_page || true)
				{
					$xtpl->assign('shared', $shared_class);
					$xtpl->parse('root.tab.date.event.inside.to_edit');
					$xtpl->assign('spam', '');
				}
			}
			// действия доступные над чужими событиями 
			else
			{
				// Еще не "закапывал" это событие
				if($e["has_spa"] == 0)
				{
					// $xtpl->parse('root.tab.date.event.inside.digg');
					$xtpl->parse('root.tab.date.event.inside.to_spam');
					$xtpl->assign('spam', '');
				}
				else
				{
					$xtpl->assign('spam', 'spam');
				}
				
				// хочу/не хочу
				if($e["has_sha"])
				{
					$xtpl->assign('shared', $shared_class);
					if($in_future)
					{
						$xtpl->parse('root.tab.date.event.inside.dont_share');
					}
				}
				else
				{
					$xtpl->assign('shared', 'not-shared');
					if($in_future)
					{
						$xtpl->parse('root.tab.date.event.inside.to_share');
					}
				}
				
				// Logger::Write(__FILE__." ".__FUNCTION__." line: ".__LINE__, print_r($e, true));
				
			}	
			
			$xtpl->parse('root.tab.date.event.inside.comments');
				
			$xtpl->assign('num_wan', $e['num_wan']);
			$xtpl->assign('num_sha', $e['num_sha']);
			$xtpl->parse('root.tab.date.event.inside.as_ref');
			// $xtpl->parse('root.tab.date.event.inside.who_share');
			
			// планы конкретного пользователя можно смотреть
			// только авторизованному пользователю
			$xtpl->assign('user_id', $e['user_id']);
		}
		else
		{
			$xtpl->assign('num_wan', $e['num_wan']);
			$xtpl->assign('num_sha', $e['num_sha']);
			$xtpl->parse('root.tab.date.event.inside.as_text');
			$xtpl->parse('root.tab.date.event.inside.num_comments');
			$xtpl->parse('root.tab.date.event.inside.num_share');
		}
			
		$xtpl->assign('username', $e['username']);
		$xtpl->assign('avatar', $e['face']);
		$xtpl->assign('info', Utils::win2utf(str_replace("\n", "<br />\n", Utils::utf2win($e['note']))));
		$xtpl->assign('comment_num', rand(0,100));
		$xtpl->parse('root.tab.date.event.inside');
		
	}
	
	public static function build_dateBox(&$xtpl, $dt)
	{
		$ts = Utils::parse_dt($dt);
		
		$cls = self::get_weekday_class($ts);
		$xtpl->assign('weekday', $cls);
		
		$txt = self::get_date_label($ts);
		$xtpl->assign('date', $txt);
		
		$xtpl->parse('root.tab.date');
	}
	
	public static function build_eventLine($events, $actor_id = null, $as_part = FALSE)
	{
		$xtpl = new XTemplate('xtpl/main-plans.xtpl');
		$xtpl->assign('root', ROOT_URL);
		
		if(is_null($events) || count($events) > 0)
		{
			$xtpl->parse('root.prev');
			
			$dt = '';
			foreach($events as $e)
			{
				if($dt != $e['dt_beg'])
				{
					if($dt != '')
						self::build_dateBox($xtpl, $dt);
						
					$dt = $e['dt_beg'];
				}
				self::build_eventInside($xtpl, $e, $actor_id);
				$xtpl->parse('root.tab.date.event');
			}
			
			if($dt != null)
			{
				self::build_dateBox($xtpl, $dt);
			}
			
			$xtpl->parse('root.next');
		}
		else
		{
			// не возвращать через AJAX "ничего не планируется"
			if(!$as_part)
				$xtpl->parse('root.nothing');
		}
		
		$xtpl->parse('root.tab');

		if($as_part || is_null($actor_id))
		{
			return $xtpl->text('root.tab');
		}
		else
		{
			$xtpl->parse('root');
			return $xtpl->text('root');
		}
	}
	
	public static function build_eventBox($event, $actor_id = null)
	{
		$xt = new XTemplate("xtpl/main-plans.xtpl");
		$xt->assign('root', ROOT_URL);
		self::build_eventInside($xt, $event, $actor_id);
		$html = $xt->text('root.tab.date.event.inside');
		return $html;
	}

	
	public static function build_adv2reg()
	{
		$xtpl = new XTemplate('xtpl/main-plans.xtpl');
		$xtpl->assign('root', ROOT_URL);
		$xtpl->parse('root.adv2reg');
		return $xtpl->text('root.adv2reg');
	}
	
	private static function get_weekday_class($timestamp)
	{
		$dnum = date("w", $timestamp);
		return (0 == $dnum || $dnum == 6 ) ? "weekend" : "workday";
	}
	
	private static function get_date_label($timestamp)
	{
		$txt = Utils::get_day_name($timestamp).", ".date("d.m.Y", $timestamp);
		return $txt;
	}
	
}